package top.whysu.gps.service.navigation;

import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import top.whysu.gps.dto.navigation.*;
import top.whysu.gps.dto.page.PagenationDataDTO;
import top.whysu.gps.po.navigation.NavigationPO;
import top.whysu.gps.po.navigation.NavigationRecordPO;

/**
 * 航行管理
 */
public interface NavigationService {
    /**
     * 切换模式：更新配置参数（如果航程不存在的话，则进行创建）
     */
    @Transactional
    void wholeSwitchMode(SwitchModeDTO switchModeDTO);

    /**
     * 导入excel
     *
     * @param uploadFile 文件
     */
    @Transactional
    void importRouteExcel(MultipartFile uploadFile);

    /**
     * 航程记录--二维表格
     *
     * @param queryDTO
     * @return
     */
    PagenationDataDTO<NavigationPO> getNavigationPage(NavigationPageQueryDTO queryDTO);

    /**
     * 航行记录--二维表格
     *
     * @param queryDTO
     * @return
     */
    PagenationDataDTO<NavigationRecordPO> getNavigationRecordPage(NavigationRecordPageQueryDTO queryDTO);

    /**
     * 航行记录--坐标地图点位
     *
     * @param queryDTO 查询对象
     * @return 返回坐标点
     */
    PagenationDataDTO<NavigationPointMapDTO> getNavigationPointMap(NavigationRecordPageQueryDTO queryDTO);

    /**
     * 必填参数校验
     *
     * @param mode 模式
     */
    void checkConfig(Integer mode);

    /**
     * 批量删除航程记录（同时删除航行记录）
     */
    void batchDeleteNavigationRecord(BatchDeleteNavigationDTO dto);
}